package com.example;

import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
import org.springframework.boot.diagnostics.FailureAnalysis;

/** 自定义 FailureAnalyzer 示例
 * 我们在 MyApplication.java 中添加了一个内部类 CustomFailureAnalyzer，
 * 它继承自 AbstractFailureAnalyzer，用于处理启动时的异常并生成可读性错误提示。
 */
public class CustomFailureAnalyzer extends AbstractFailureAnalyzer<IllegalArgumentException> {
    /**
     * 创建一个自定义的 FailureAnalysis 对象，用于处理 IllegalArgumentException。
     *
     * @param rootFailure 根异常，即导致失败的根本原因。
     * @param cause       IllegalArgumentException 实例，表示具体的非法参数异常信息。
     * @return 返回一个包含错误消息、解决方案和原始异常的 FailureAnalysis 对象。
     */
    @Override
    protected FailureAnalysis analyze(Throwable rootFailure, IllegalArgumentException cause) {
        return new FailureAnalysis("Custom error message: " + cause.getMessage(), "Consider checking your application configuration.", cause);
    }
}
